<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="智能麦联 万物互联">
        <meta name="author" content="Mr.Wang">
        <link rel="canonical" href="http://www.mapgoo.net/">
        <link rel="shortcut icon" href="./img/favicon.ico">
        <title>智能麦联</title>
        <link href="./css/bootstrap-custom.min.css" rel="stylesheet">
        <link href="./css/font-awesome-4.5.0.css" rel="stylesheet">
        <link href="./css/base.css" rel="stylesheet">
        <link rel="stylesheet" href="./css/highlight.css">
        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
        <![endif]-->
	
	<script src="./js/jquery-1.10.2.min.js"></script>
        <script src="./js/bootstrap-3.0.3.min.js"></script>
        <script src="./js/highlight.pack.js"></script> 
    </head>

    <body class="homepage">

        <div class="navbar navbar-default navbar-fixed-top" role="navigation">
    <div class="container">

        <!-- Collapsed navigation -->
        <div class="navbar-header">
            <!-- Expander button -->
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href=".">智能麦联</a>
        </div>

        <!-- Expanded navigation -->
        <div class="navbar-collapse collapse">
                <!-- Main navigation -->
                <ul class="nav navbar-nav">
                    <li class="active">
                        <a href=".">对接协议</a>
                    </li>
                    <li >
                        <a href="acc/">远程唤醒</a>
                    </li>
                    <li >
                        <a href="llgl/">流量管理</a>
                    </li>
                    <li >
                        <a href="whitelist/">白名单应用</a>
                    </li>
                    <li >
                        <a href="link/">联系</a>
                    </li>
                </ul>

            <ul class="nav navbar-nav navbar-right">
                <li>
                    <a href="#" data-toggle="modal" data-target="#mkdocs_search_modal">
                        <i class="fa fa-search"></i> Search
                    </a>
                </li>
                    <li class="disabled">
                        <a rel="next" >
                            <i class="fa fa-arrow-left"></i> Previous
                        </a>
                    </li>
                    <li >
                        <a rel="prev" href="acc/">
                            Next <i class="fa fa-arrow-right"></i>
                        </a>
                    </li>
            </ul>
        </div>
    </div>
</div>

        <div class="container">
                <div class="col-md-3"><div class="bs-sidebar hidden-print affix well" role="complementary">
    <ul class="nav bs-sidenav">
        <li class="main active"><a href="#v210">概述 v2.10</a></li>
        <li class="main "><a href="#_1">名词约定</a></li>
        <li class="main "><a href="#_2">对接流程</a></li>
        <li class="main "><a href="#_3">协议约定</a></li>
        <li class="main "><a href="#_4">变更记录</a></li>
    </ul>
</div></div>
                <div class="col-md-9" role="main">

<h2 id="v210">概述 v2.10</h2>
<p>本文档详细介绍<code>智能车载方案商与智能麦联APK</code>之间所要遵循的协议约定，通过遵循协议约定，从而让智能车载硬件具备更多增值服务，如：远程导航、远程拍照/视频、当前位置、历史轨迹回放等功能。</p>
<h2 id="_1">名词约定</h2>
<ol>
<li>智能车载方案商：以下简称客户，他们提供基于Android系统的智能车载硬件(如:智能后社镜、大屏机、电子狗、MiFi等)，希望通过微信公众号、APP等应用载体，能为目标用户提供基于智能车载设备的服务，如：远程拍照、信息下发、预约接人/导航、车务信息提醒等。</li>
<li>智能麦联APK：以下简称APK，是由麦谷科技提供的APK产品，它通过预先安装在智能车载硬件中，与智能车载系统进行内部通讯。</li>
</ol>
<h2 id="_2">对接流程</h2>
<ol>
<li>客户安排技术人员熟悉本文档的协议约定、提供对接样机(非必须)；</li>
<li>我方提供<code>对接APK</code>，配合客户技术人员基于硬件方案进行功能点联调；</li>
<li>对接功能点全部通过后，我方提供<code>正式版APK</code>，用于客户生产使用；</li>
</ol>
<p><strong>特别注意</strong></p>
<ol>
<li>客户拿到联调通过、正式版的APK后，需要将其刷到其ROM中；</li>
<li>客户须确保系统开机注册1个智能麦联Service，其包名为<code>com.mapgoo.location.service.DataSyncServiceSDK</code></li>
</ol>
<p>举例</p>
<pre><code class="java">startService(new Intent()
              .setClassName(&quot;com.mapgoo.diruite&quot;,
                            &quot;com.mapgoo.smart.service.DataSyncServiceSDK&quot;)
            );
</code></pre>

<h2 id="_3">协议约定</h2>
<p>客户通过实现以下协议约定，可以使智能车载设备提供更多有意义的服务，如：获取远程照片、视频、远程下发导航、远程下发信息提醒。</p>
<p><strong> 1. 远程导航 </strong></p>
<table>
<thead>
<tr>
<th>消息名</th>
<th>intent.action.mapgoo.navi</th>
</tr>
</thead>
<tbody>
<tr>
<td>消息说明</td>
<td>APK广播导航信息，通知客户系统调用主机第三方导航APP。具体是调用哪款导航软件,是由客户主机系统决定。</td>
</tr>
<tr>
<td>消息流向</td>
<td>APK → 后视镜</td>
</tr>
</tbody>
</table>
<p>举例</p>
<pre><code class="java">Intent intent = new Intent(“intent.action.mapgoo.navi&quot;)
                 .putExtra(“navi_lon”,112.23243)  // wgs84坐标,纬度,double类型
                 .putExtra(“navi_lat”,32.23434)  // wgs84坐标,经度,double类型
                 .putExtra(&quot;navi_poi&quot;,poi);  // 位置描述,字符串类型
SendBoradcast(intent);
</code></pre>

<p><strong> 2. 远程拍照/视频 </strong></p>
<table>
<thead>
<tr>
<th>消息名</th>
<th>intent.action.mapgoo.media</th>
</tr>
</thead>
<tbody>
<tr>
<td>消息说明</td>
<td>APK通知客户主机系统进行拍照或录制视频的操作</td>
</tr>
<tr>
<td>消息流向</td>
<td>APK → 后视镜</td>
</tr>
</tbody>
</table>
<p>举例</p>
<pre><code class="java"> Intent intent = new Intent(“intent.action.mapgoo.media&quot;)
                    .putExtra(“type”,”photo”)   //字符串类型
                    .putExtra(&quot;camera&quot;,0)       //整数类型
                    .putExtra(&quot;cmdseq&quot;,1479823802);  //长整数类型
</code></pre>

<p>或</p>
<pre><code class="java">  Intent intent = new Intent(“intent.action.mapgoo.media&quot;)
                    .putExtra(“type”,”video”)
                    .putExtra(“time”,10)           //整数类型
                    .putExtra(&quot;camera&quot;,0))
                    .putExtra(&quot;cmdseq&quot;,1479823802); 
  SendBroadcast(intent);
</code></pre>

<p>其中</p>
<ul>
<li>type：取值范围photo或video，分别表示拍照、视频</li>
<li>time：仅当type为video时，该值才有效，用于表示录制视频时长，单位：秒。取值范围：10~60</li>
<li>camera：表示摄像头序号，0表示前拉，1表示后拉，2表示车内，3表示前内双录，4表示后内双录，5表示前内后三录，9表示前后双录</li>
<li>cmdseq：命令流水号，主机对此广播响应时，要返回该命令流水号</li>
</ul>
<div class="admonition note">
<p class="admonition-title">主机系统收到此广播后，要将上述相关参数保存，因为当任务完成后，需要将这些参数，再次以广播形式通知给APK</p>
</div>
<p><strong> 3. 主机拍照完成通知 </strong></p>
<p>当主机根据APK的广播，完成拍照任务，需要发送广播通知APK进行二次处理，广播协议约定如下：</p>
<table>
<thead>
<tr>
<th>消息名</th>
<th>intent.action.mapgoo.shock.photo</th>
</tr>
</thead>
<tbody>
<tr>
<td>消息说明</td>
<td>客户主机系统拍照结束后，发送此广播通知APK进行二次处理(上传到云端)</td>
</tr>
<tr>
<td>消息流向</td>
<td>后视镜 → APK</td>
</tr>
</tbody>
</table>
<p>举例</p>
<pre><code class="java"> Intent intent = new Intent(&quot;intent.action.mapgoo.shock.photo&quot;);
 intent.putExtra(&quot;filepath&quot;:&quot;/sdcard/my/1.jpg&quot;).putExtra(&quot;trigger&quot;,0).putExtra(&quot;camera&quot;,0).putExtra(&quot;cmdseq&quot;,1479823802);
 SendBroadcast(intent);
</code></pre>

<p>其中</p>
<ul>
<li>filepath：表示文件存储的完整路径</li>
<li>tigger：表示文件生成条件，0表示主机震动报警产生的图片，1表示由APK通知后产生的图片，2表示由SOS报警触发产生的图片，3表示由车内语音控制产生的图片</li>
<li>camera：表示摄像头序号，0表示前拉，1表示后拉，2表示车内，3表示前内双录，4表示后内双录，5表示前内后三录，9表示前后双录</li>
<li>cmdseq：命令流水号，需要特别注意：该命令流水号是由APK生成</li>
</ul>
<p><strong> 4. 主机视频录制完成通知 </strong></p>
<table>
<thead>
<tr>
<th>消息名</th>
<th>intent.action.mapgoo.shock.video</th>
</tr>
</thead>
<tbody>
<tr>
<td>消息说明</td>
<td>客户主机系统视频录制结束后，发送此广播通知APK进行二次处理(上传到云端)</td>
</tr>
<tr>
<td>消息流向</td>
<td>后视镜 → APK</td>
</tr>
</tbody>
</table>
<p>举例</p>
<pre><code class="java">    Intent intent = new Intent(&quot;intent.action.mapgoo.shock.video&quot;);
    intent.putExtra(&quot;filepath&quot;:&quot;/sdcard/my/1.mov&quot;)
          .putExtra(&quot;trigger&quot;,0)
          .putExtra(&quot;timer&quot;,10)
          .putExtra(&quot;camera&quot;,0)
          .putExtra(&quot;type&quot;,0)
          .putExtra(&quot;cmdseq&quot;,1479823802);
    SendBroadcast(intent);
</code></pre>

<p>其中</p>
<ul>
<li>filepath：表示文件存储的完整路径</li>
<li>tigger：表示文件生成条件，0表示主机震动报警后产生的视频，1表示由APK通知后产生的视频，2表示由SOS报警触发产生的视频，3表示由车内语音控制产生的视频</li>
<li>timer：表示视频录制的时长，单位：秒</li>
<li>camera：表示摄像头序号，0表示前拉，1表示后拉，2表示车内，3表示前内双录，4表示后内双录，5表示前内后三录，9表示前后双录</li>
<li>type：文件类型，0表示小视频，1表示大视频(时长超过2分钟，需要APK自行裁剪、压缩上传)</li>
<li>cmdseq：命令流水号，需要特别注意：该命令流水号是由APK生成</li>
</ul>
<p><strong> 5. 视频/图片云端上传成功 </strong></p>
<table>
<thead>
<tr>
<th>消息名</th>
<th>intent.action.mapgoo.upload.media.success</th>
</tr>
</thead>
<tbody>
<tr>
<td>消息说明</td>
<td>视频或图片云端上传成功后，APK发送此广播通知客户主机系统</td>
</tr>
<tr>
<td>消息流向</td>
<td>APK → 后视镜</td>
</tr>
</tbody>
</table>
<p>举例</p>
<pre><code class="java">    Intent intent = new Intent(“intent.action.mapgoo.upload.media.success&quot;).putExtra(“path”,”/sdcard/1.jpg”);
    SendBroadcast(intent);
</code></pre>

<p>其中</p>
<ul>
<li>path：已上传成功的原始文件完整路径(对于主机系统来说可以考虑，将已上传成功的文件删除，减少TF卡空间占用)</li>
</ul>
<p><strong> 5.1 视频/图片云端上传失败 </strong></p>
<table>
<thead>
<tr>
<th>消息名</th>
<th>intent.action.mapgoo.upload.media.fail</th>
</tr>
</thead>
<tbody>
<tr>
<td>消息说明</td>
<td>视频或图片连续3次试图传到云端失败，APK发送此广播通知客户主机系统</td>
</tr>
<tr>
<td>消息流向</td>
<td>APK → 后视镜</td>
</tr>
</tbody>
</table>
<p>举例</p>
<pre><code class="java">    Intent intent = new Intent(“intent.action.mapgoo.upload.media.fail&quot;).putExtra(“path”,”/sdcard/1.jpg”);
    SendBroadcast(intent);
</code></pre>

<p>其中</p>
<ul>
<li>path：上传失败的原始文件完整路径(对于主机系统来说此文件可保留，等待APK下次处理)</li>
</ul>
<p><strong> 6. APK网络连接正常 </strong></p>
<p>APK与云平台成功连接之后，会主动发送本广播给主机系统。客户主机可根据需要，决定是否处理本广播。</p>
<table>
<thead>
<tr>
<th>消息名</th>
<th>intent.action.mapgoo.connect.service.success</th>
</tr>
</thead>
<tbody>
<tr>
<td>消息说明</td>
<td>APK成功连接到麦谷云中心后，发送此广播通知客户主机系统</td>
</tr>
<tr>
<td>消息流向</td>
<td>APK → 后视镜</td>
</tr>
</tbody>
</table>
<p><strong> 7. 记录仪视频管理 </strong></p>
<p>客户主机自带记录仪APP，会在工作时独占主机摄像头的资源。当记录仪APP产生了<code>新视频、锁影视频(碰撞)、删除视频</code>时，需要由主机系统发送广播通知APK进行二次处理(因为APK根据这些广播，结合驾驶分析，智能抽取出关键视频并上传到云端，可以让用户方便地了解到重要行车视频)。</p>
<p>广播带<code>Intent.FLAG_INCLUDE_STOPPED_PACKAGES</code>这个系统FLAG广播内容约定如下:</p>
<pre><code class="java">    public static final String ACTION_CARDV_EVENT = &quot;action.cardv.event.generate&quot;;
    public static final String EXTRA_EVENT_TYPE = &quot;EXTRA_EVENT_TYPE&quot;;
    public static final String EXTRA_EVENT_ACTION = &quot;EXTRA_EVENT_ACTION&quot;;
    public static final String EXTRA_EVENT_DATA = &quot;EXTRA_EVENT_DATA&quot;;
</code></pre>

<p><strong> 7.1 震动或碰撞视频 </strong></p>
<p>当记录仪APP根据主机的各类传感器，判断出当前视频为震动或锁影(各家方案,对此视频定义不同)类型时，需发广播通知APK。</p>
<pre><code class="java">    EXTRA_EVENT_TYPE:&quot;collision&quot;
    EXTRA_EVENT_DATA:&quot;2016-02-11 21:09:12&quot;(碰撞时间)
</code></pre>

<p><strong> 7.2 新增或删除视频 </strong></p>
<p>当记录仪APP产生一段新视频，或者通过记录仪APP对某个视频进行删除操作时，需发广播通知APK</p>
<p><strong> 7.2.1 产生新视频 </strong></p>
<pre><code class="java">EXTRA_EVENT_TYPE:&quot;normalvideo&quot;
EXTRA_EVENT_ACTION:“new&quot;
EXTRA_EVENT_DATA:&quot;videopath&quot;(普通视频地址)
</code></pre>

<p><strong> 7.2.2 删除视频 </strong></p>
<pre><code class="java">EXTRA_EVENT_TYPE:&quot;normalvideo&quot;
EXTRA_EVENT_ACTION:“delete&quot;
EXTRA_EVENT_DATA:&quot;videopath&quot;(普通视频地址)
</code></pre>

<p><strong> 7.3 锁影视频 </strong></p>
<p>当记录仪APP产生的锁影/碰撞视频时，需发广播通知APK</p>
<p><strong> 7.3.1 产生锁影视频 </strong></p>
<pre><code class="java">EXTRA_EVENT_TYPE:&quot;markedvideo&quot;
EXTRA_EVENT_ACTION:&quot;lock&quot;
EXTRA_EVENT_DATA:&quot;videopath&quot;(操作的视频地址)
</code></pre>

<p><strong> 7.3.2 解除锁影视频 </strong></p>
<pre><code class="java">EXTRA_EVENT_TYPE:&quot;markedvideo&quot;
EXTRA_EVENT_ACTION:&quot;unlock&quot;
EXTRA_EVENT_DATA:&quot;videopath&quot;(操作的视频地址)
</code></pre>

<p><strong> 7.4 完整举例：当主机记录仪APP产生一段锁影视频时 </strong></p>
<pre><code class="java">    private void sendCarDvBroadcast(String eventtype,String action,String data){
        Intent intent = new Intent(ACTION_CARDV_EVENT);
        intent.putExtra(EXTRA_EVENT_TYPE,&quot;markedvideo&quot;);
        intent.putExtra(EXTRA_EVENT_ACTION,&quot;lock&quot;);
        intent.putExtra(EXTRA_EVENT_DATA,&quot;/sdcard/video/video1.mp4&quot;);
        intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
        sendBroadcast(intent);
    }
</code></pre>

<p><strong> 7.5 ACC上电或下电 </strong></p>
<p>主机的ACC状态发生变化时，需要向APK主动发送ACC状态变化广播通知，如：ACC上电和ACC下电;</p>
<pre><code class="java">
 sendBroadcast(new Intent(&quot;acc_connect&quot;));     // ACC上电
 sendBroadcast(new Intent(&quot;acc_disconnect&quot;));  // ACC下电

</code></pre>

<p><strong> 7.6 短信控制类指令约定 </strong></p>
<div class="admonition note">
<p class="admonition-title">以下约定，客户可以完全忽略，因为它只对APK有效!</p>
</div>
<p>云端向APK下发的短信控制类指令，全部是以*MG开头，以#结束，APK收到短信指令后，根据短信内容进行对应广播通知。</p>
<p><strong> 7.6.1 远程拍照 </strong></p>
<ul>
<li>指令格式：*MG2001BAC,P1,P2,P3,P4#</li>
<li>其中：P1(命令流水号,由云端设定)、P2(照片分辩率)、P3(图像抓拍张数)、P4(抓拍间隔,单位:秒)</li>
<li>分辨率取值：</li>
</ul>
<table>
<thead>
<tr>
<th>值</th>
<th>意义</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>240*320</td>
</tr>
<tr>
<td>2</td>
<td>320*480</td>
</tr>
<tr>
<td>3</td>
<td>360*640</td>
</tr>
<tr>
<td>4</td>
<td>480*800</td>
</tr>
<tr>
<td>5</td>
<td>640*960</td>
</tr>
<tr>
<td>6</td>
<td>720*1280</td>
</tr>
<tr>
<td>7</td>
<td>更高分辨率</td>
</tr>
</tbody>
</table>
<ul>
<li>抓拍间隔：该值一般是由3～4位整数构成，最后2位用于表示摄像头编号,倒数第3～4位表示抓拍间隔，举例说明：</li>
</ul>
<table>
<thead>
<tr>
<th>值</th>
<th>意义</th>
</tr>
</thead>
<tbody>
<tr>
<td>101</td>
<td>抓拍间隔01s，使用01号摄像头，即前置摄像头</td>
</tr>
<tr>
<td>102</td>
<td>抓拍间隔01s，使用02号摄像头，即后置摄像头</td>
</tr>
<tr>
<td>1203</td>
<td>抓拍间隔12s，使用03号摄像头，即车内摄像头</td>
</tr>
<tr>
<td>104</td>
<td>抓拍间隔1s，使用04号摄像头，即前后摄像头双路</td>
</tr>
<tr>
<td>105</td>
<td>抓拍间隔1s，使用05号摄像头，即前内摄像头双路</td>
</tr>
<tr>
<td>106</td>
<td>抓拍间隔1s，使用06号摄像头，即后内摄像头双路</td>
</tr>
<tr>
<td>107</td>
<td>抓拍间隔1s，使用07号摄像头，即前置、内置、后置三路</td>
</tr>
</tbody>
</table>
<p><strong> 7.6.2 远程录制视频 </strong></p>
<ul>
<li>指令格式：*MG2001BAD,P1,P2#</li>
<li>
<p>其中：P1,P2表它们分别是：</p>
<ul>
<li>P1表示流水号，由云端设定；</li>
<li>P2表示视频时长，单位：秒，缺省是10s；</li>
</ul>
</li>
<li>
<p>视频时长：该值一般是由3～4位整数构成，最后2位用于表示摄像头编号,倒数第3～4位表示视频录制时长，举例说明：</p>
</li>
</ul>
<table>
<thead>
<tr>
<th>值</th>
<th>意义</th>
</tr>
</thead>
<tbody>
<tr>
<td>1201</td>
<td>录制时长12s，使用01号摄像头，即前置摄像头</td>
</tr>
<tr>
<td>3002</td>
<td>录制时长30s，使用02号摄像头，即后置摄像头</td>
</tr>
<tr>
<td>1203</td>
<td>录制时长12s，使用03号摄像头，即车内摄像头</td>
</tr>
<tr>
<td>104</td>
<td>录制时长1s，使用04号摄像头，即前后摄像头双路</td>
</tr>
<tr>
<td>105</td>
<td>录制时长1s，使用05号摄像头，即前内摄像头双路</td>
</tr>
<tr>
<td>106</td>
<td>录制时长1s，使用06号摄像头，即后内摄像头双路</td>
</tr>
<tr>
<td>107</td>
<td>录制时长1s，使用07号摄像头，即前置、内置、后置三路</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="_4">变更记录</h2>
<table>
<thead>
<tr>
<th>日期</th>
<th>版本</th>
<th>内容</th>
<th>编写者</th>
</tr>
</thead>
<tbody>
<tr>
<td>2015-08-01</td>
<td>v1.0</td>
<td>文档初建</td>
<td>Wang</td>
</tr>
<tr>
<td>2015-08-17</td>
<td>v1.1</td>
<td>新增摄像头控制API接口约定</td>
<td>Wang</td>
</tr>
<tr>
<td>2015-08-18</td>
<td>v1.2</td>
<td>新增震动报警图片上传API接口约定</td>
<td>Wang</td>
</tr>
<tr>
<td>2015-09-20</td>
<td>v1.4</td>
<td>新增图片、视频广播事件通知约定</td>
<td>Wang</td>
</tr>
<tr>
<td>2015-09-10</td>
<td>v1.5</td>
<td>完善图片、视频通知广播事件约定</td>
<td>Wang、LWL</td>
</tr>
<tr>
<td>2015-12-06</td>
<td>v1.6</td>
<td>新增第三方导航广播、休眠、唤醒广播事件约定</td>
<td>Wang</td>
</tr>
<tr>
<td>2016-01-21</td>
<td>v1.7</td>
<td>去除开机注册语音服务约定、针对Android 5.1系统服务启动的约定完善</td>
<td>Wang、LWL</td>
</tr>
<tr>
<td>2016-02-20</td>
<td>v1.8</td>
<td>增加图片或者视频上传成功后广播通知后视镜 <br> 增加开机连接到麦谷云服务中心后广播通知后视镜</td>
<td>LWL</td>
</tr>
<tr>
<td>2016-05-04</td>
<td>v2.0</td>
<td>去除一些不重要的广播约定 <br> 新增ACC状态、记录仪视频状态、短信转发广播约定</td>
<td>Wang、LWL</td>
</tr>
<tr>
<td>2016-10-13</td>
<td>v2.1</td>
<td>修改ACC广播约定、新增停车低功耗处理方案</td>
<td>Wang、TheShey</td>
</tr>
<tr>
<td>2016-10-24</td>
<td>v2.2</td>
<td>完善短信唤醒指令格式约定</td>
<td>Wang</td>
</tr>
<tr>
<td>2016-11-02</td>
<td>v2.3</td>
<td>调整文档格式</td>
<td>Wang</td>
</tr>
<tr>
<td>2016-11-02</td>
<td>v2.4</td>
<td>约定SOS报警触发类型</td>
<td>Wang</td>
</tr>
<tr>
<td>2016-11-16</td>
<td>v2.5</td>
<td>远程拍照/录视频支持多路摄像头</td>
<td>Wang</td>
</tr>
<tr>
<td>2016-11-22</td>
<td>v2.6</td>
<td>完善远程控制命令(新增命令流水号) <br> 区分原始视频、小视频判断方法</td>
<td>Wang</td>
</tr>
<tr>
<td>2016-11-23</td>
<td>v2.7</td>
<td>微调文档格式,明确广播出去参数的数据类型</td>
<td>Wang</td>
</tr>
<tr>
<td>2016-12-27</td>
<td>v2.8</td>
<td>补充远程拍照/视频指令说明</td>
<td>Wang</td>
</tr>
<tr>
<td>2017-01-06</td>
<td>v2.9</td>
<td>补充远程拍照/视频指令,支持前内、后内摄像头控制</td>
<td>Wang</td>
</tr>
<tr>
<td>2017-02-07</td>
<td>v2.10</td>
<td>补充远程拍照/视频指令，支持前、内、后三路摄像头控制</td>
<td>Wang</td>
</tr>
</tbody>
</table></div>
        </div>

        <footer class="col-md-12">
            <hr>
                <p>Copyright (c) 2016 by MapGoo</p>
            <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</p>
        </footer>
        <script>var base_url = '.';</script>
        <script data-main="./mkdocs/js/search.js" src="./mkdocs/js/require.js"></script>
        <script src="./js/base.js"></script><div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="Search Modal" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                <h4 class="modal-title" id="exampleModalLabel">Search</h4>
            </div>
            <div class="modal-body">
                <p>
                    From here you can search these documents. Enter
                    your search terms below.
                </p>
                <form role="form">
                    <div class="form-group">
                        <input type="text" class="form-control" placeholder="Search..." id="mkdocs-search-query">
                    </div>
                </form>
                <div id="mkdocs-search-results"></div>
            </div>
            <div class="modal-footer">
            </div>
        </div>
    </div>
</div>

    </body>
</html>

<!--
MkDocs version : 0.16.0
Build Date UTC : 2017-07-17 13:29:28
-->
